home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / X11 / etc / Xinstall.sh next >
Linux/UNIX/POSIX Shell Script  |  2006-04-12  |  41KB  |  1,853 lines

  1. #!/bin/sh
  2.  
  3. #
  4. # $XFree86: xc/programs/Xserver/hw/xfree86/etc/Xinstall.sh,v 1.72 2004/02/26 16:58:51 dawes Exp $
  5. #
  6. # Copyright ⌐ 2000 by Precision Insight, Inc.
  7. # Copyright ⌐ 2000, 2001 by VA Linux Systems, Inc.
  8. # Copyright ⌐ 1996-2004 by The XFree86 Project, Inc.
  9. #
  10. # Permission is hereby granted, free of charge, to any person obtaining a
  11. # copy of this software and associated documentation files (the "Software"),
  12. # to deal in the Software without restriction, including without limitation
  13. # the rights to use, copy, modify, merge, publish, distribute, sublicense,
  14. # and/or sell copies of the Software, and to permit persons to whom the
  15. # Software is furnished to do so, subject to the following conditions:
  16. #
  17. # The above copyright notice and this permission notice shall be included in
  18. # all copies or substantial portions of the Software.
  19. #
  20. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  21. # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  22. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  23. # THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
  24. # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  25. # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  26. # OTHER DEALINGS IN THE SOFTWARE.
  27. #
  28. # Except as contained in this notice, the name of the copyright holder(s)
  29. # and author(s) shall not be used in advertising or otherwise to promote
  30. # the sale, use or other dealings in this Software without prior written
  31. # authorization from the copyright holder(s) and author(s).
  32. #
  33.  
  34. #
  35. # This script should be used to install XFree86 4.4.0.
  36. #
  37. # Parts of this script are based on the old preinst.sh and postinst.sh
  38. # scripts.
  39. #
  40. # Set tabs to 4 spaces to view/edit this file.
  41. #
  42. # Authors:    David Dawes <dawes@xfree86.org>
  43. #
  44.  
  45. # Fallbacks for when the bindist version can't be auto-detected.
  46. # These should be updated for each release.
  47.  
  48. SNAPSHOT=n
  49.  
  50. if [ $SNAPSHOT = y ]; then
  51.     FULLPREFIX=XXX
  52.     VERSION=4.3.99.903
  53.     PATCHLEVEL=0
  54.     FULLVERSION=$VERSION
  55. else
  56.     FULLPREFIX=4.4
  57.     PATCHLEVEL=0
  58.     VERSION=$FULLPREFIX.$PATCHLEVEL
  59.     FULLVERSION=$FULLPREFIX.0
  60. fi
  61. SCRIPTVERSION=$VERSION
  62.  
  63. BINDISTFULLPREFIX=
  64. BINDISTPATCHLEVEL=
  65. BINDISTVERSION=
  66. BINDISTFULLVERSION=
  67.  
  68. ROOTDIR=
  69.  
  70. TESTROOT=/home1/test
  71.  
  72. if [ X"$1" = "X-test" -o X"$XINST_TEST" != X ]; then
  73.     if [ X"$1" = "X-test" ]; then
  74.         shift
  75.         case "$1" in
  76.         /*)
  77.             TESTROOT="$1"
  78.             shift
  79.             ;;
  80.         esac
  81.     else
  82.         case "$XINST_TEST" in
  83.         /*)
  84.             TESTROOT="$XINST_TEST"
  85.             ;;
  86.         esac
  87.     fi
  88.     ROOTDIR=$TESTROOT
  89.     echo ""
  90.     echo "Running in test mode, with root set to $TESTROOT"
  91.     sleep 2
  92.     echo ""
  93.     if [ ! -d $TESTROOT ]; then
  94.         echo "$TESTROOT doesn't exist (for test mode)"
  95.         exit 1
  96.     fi
  97.     for i in usr etc var; do
  98.         if [ ! -d $TESTROOT/$i ]; then
  99.             echo "$TESTROOT/$i doesn't exist, creating it"
  100.             mkdir $TESTROOT/$i
  101.         fi
  102.     done
  103. fi
  104.  
  105. RUNDIR=$ROOTDIR/usr/X11R6
  106. ETCDIR=$ROOTDIR/etc
  107. VARDIR=$ROOTDIR/var
  108.  
  109. OLDFILES=" \
  110.     $RUNDIR/include/freetype2/ft2build.h \
  111.     "
  112.  
  113. OLDDIRS=" \
  114.     $RUNDIR/lib/X11/xkb/compiled \
  115.     $RUNDIR/lib/X11/xkb/geometry/hp \
  116.     "
  117.  
  118. OLDMODULES=" \
  119.     xie.so \
  120.     pex5.so \
  121.     glx.so \
  122.     "
  123.  
  124. BASEDIST=" \
  125.     Xbin.tgz \
  126.     Xlib.tgz \
  127.     Xman.tgz \
  128.     Xdoc.tgz \
  129.     Xfnts.tgz \
  130.     Xfenc.tgz \
  131.     "
  132.  
  133. UPDDIST=" \
  134.     Xupd.tgz \
  135.     "
  136.  
  137. UPDATEDIST=" \
  138.     Xupdate.tgz \
  139.     Xdrivers.tgz \
  140.     Xdocupd.tgz \
  141.     "
  142.  
  143. ETCDIST="Xetc.tgz"
  144.  
  145. VARDIST=""
  146.  
  147. SERVDIST=" \
  148.     Xxserv.tgz \
  149.     Xmod.tgz \
  150.     "
  151. OPTDIST=" \
  152.     Xfsrv.tgz \
  153.     Xnest.tgz \
  154.     Xprog.tgz \
  155.     Xprt.tgz \
  156.     Xvfb.tgz \
  157.     Xf100.tgz \
  158.     Xfcyr.tgz \
  159.     Xfscl.tgz \
  160.     Xhtml.tgz \
  161.     Xjdoc.tgz \
  162.     Xps.tgz \
  163.     Xpdf.tgz \
  164.     "
  165.  
  166. ETCDLINKS=" \
  167.     app-defaults \
  168.     fs \
  169.     lbxproxy \
  170.     proxymngr \
  171.     rstart \
  172.     twm \
  173.     xdm \
  174.     xinit \
  175.     xsm \
  176.     xserver \
  177.     "
  178.  
  179. ETCFLINKS=" \
  180.     XftConfig \
  181.     "
  182.  
  183. ETCFONTFILES=" \
  184.     fonts.conf \
  185.     fonts.dtd \
  186.     "
  187.  
  188.  
  189. XKBDIR="$ETCDIR/X11/xkb"
  190. XKBDBDIR=
  191.  
  192. FONTDIRS=" \
  193.     local \
  194.     misc
  195.     "
  196.  
  197. XSERVERCMD="$RUNDIR/bin/XFree86"
  198.  
  199. VERSIONFILE=".XFree86_Version"
  200.  
  201. WDIR="`pwd`"
  202.  
  203. DOUPDATE=
  204. DOBASE=
  205.  
  206. OPTS=""
  207.  
  208. # Check how to suppress newlines with echo (from perl's Configure)
  209. ((echo "xxx\c"; echo " ") > .echotmp) 2> /dev/null
  210. if [ ! -f .echotmp ]; then
  211.     echo "Can't write to the current directory.  Aborting";
  212.     exit 1
  213. fi
  214. if grep c .echotmp >/dev/null 2>&1; then
  215.     n='-n'
  216.     c=''
  217. else
  218.     n=''
  219.     c='\c'
  220. fi
  221. rm -f .echotmp
  222.  
  223. Echo()
  224. {
  225.     echo $n "$@""$c"
  226. }
  227.  
  228. ContinueNo()
  229. {
  230.     Echo "Do you wish to continue? (y/n) [n] "
  231.     read response
  232.     case "$response" in
  233.     [yY]*)
  234.         echo ""
  235.         ;;
  236.     *)
  237.         echo "Aborting the installation."
  238.         exit 2
  239.         ;;
  240.     esac
  241. }
  242.  
  243. ContinueYes()
  244. {
  245.     Echo "Do you wish to continue? (y/n) [y] "
  246.     read response
  247.     case "$response" in
  248.     [nN]*)
  249.         echo "Aborting the installation."
  250.         exit 2
  251.         ;;
  252.     *)
  253.         echo ""
  254.         ;;
  255.     esac
  256. }
  257.  
  258. Description()
  259. {
  260.     case $1 in
  261.     Xfsrv*)
  262.         echo "font server";;
  263.     Xnest*)
  264.         echo "Nested X server";;
  265.     Xprog*)
  266.         echo "programmer support";;
  267.     Xprt*)
  268.         echo "X print server";;
  269.     Xvfb*)
  270.         echo "Virtual framebuffer X server";;
  271.     Xdrm*)
  272.         echo "DRM kernel module source";;
  273.     Xf100*)
  274.         echo "100dpi fonts";;
  275.     Xfcyr*)
  276.         echo "Cyrillic fonts";;
  277.     Xfscl*)
  278.         echo "Scaled fonts (Speedo, Type1 and TTF)";;
  279.     Xhtml*)
  280.         echo "Docs in HTML";;
  281.     Xjdoc*)
  282.         echo "Docs in Japanese";;
  283.     Xps*)
  284.         echo "Docs in PostScript";;
  285.     Xpdf*)
  286.         echo "Docs in PDF";;
  287.     Xaout*)
  288.         echo "a.out compatibility libraries";;
  289.     Xquartz*)
  290.         echo "Mac OS X Quartz X server and extensions";;
  291.     Xupd.tgz)
  292.         echo "Post-release updates";;
  293.     *)
  294.         echo "unknown";;
  295.     esac
  296. }
  297.  
  298. CheckUtil()
  299. {
  300.     if [ X"$1" = X-t ]; then
  301.         shift
  302.         testonly=1
  303.     else
  304.         testonly=""
  305.     fi
  306.  
  307.     # check if 'which' works
  308.     if which /bin/sh > /dev/null 2>&1; then
  309.         if which $1 > /dev/null 2>&1; then
  310.             return 0
  311.         else
  312.             if [ "$testonly" ]; then
  313.                 return 1
  314.             else
  315.                 echo "Cannot find the \"$1\" command."
  316.                 echo "Aborting"
  317.                 exit 1
  318.             fi
  319.         fi
  320.     else
  321.         return 0
  322.     fi
  323. }
  324.  
  325. ReadLink()
  326. {
  327.     rltmp="`ls -l $1`"
  328.     rl=`expr "$rltmp" : '.*-> \([^     ]*\)'`
  329.     echo $rl
  330. }
  331.  
  332. GetOsInfo()
  333. {
  334.     CheckUtil uname
  335.  
  336.     echo "Checking which OS you're running..."
  337.  
  338.     OsName="`uname`"
  339.     OsVersion="`uname -r`"
  340.     case "$OsName" in
  341.     SunOS) # Assumes SunOS 5.x
  342.         OsArch="`uname -p`"
  343.         ;;
  344.     *)
  345.         OsArch="`uname -m`"
  346.         ;;
  347.     esac
  348.     # Some SVR4.0 versions have a buggy uname that reports the node name
  349.     # for the OS name.  Try to catch that here.  Need to check what is
  350.     # reported for non-buggy versions.
  351.     if [ "$OsName" = "`uname -n`" -a -f /stand/unix ]; then
  352.         OsName=UNIX_SV
  353.     fi
  354.     echo "uname reports '$OsName' version '$OsVersion', architecture '$OsArch'."
  355.  
  356.     # Find the object type, where needed
  357.  
  358.     case "$OsName" in
  359.     FreeBSD|NetBSD|OpenBSD)
  360.         CheckUtil file
  361.         if file -L /bin/sh | grep ELF > /dev/null 2>&1; then
  362.             OsObjFormat=ELF
  363.         else
  364.             OsObjFormat=a.out
  365.         fi
  366.         ;;
  367.     esac
  368.  
  369.     if [ X"$OsObjFormat" != X ]; then
  370.         Echo "Object format is '$OsObjFormat'.  "
  371.         needNL=YES
  372.     fi
  373.  
  374.     # test's flag for symlinks
  375.     #
  376.     # For OSs that don't support symlinks, choose a type that is guaranteed to
  377.     # return false for regular files and directories.
  378.  
  379.     case "$OsName" in
  380.     FreeBSD)
  381.         case "$OsVersion" in
  382.         2.*)
  383.             L="-h"
  384.             ;;
  385.         *)
  386.             L="-L"
  387.             ;;
  388.         esac
  389.         ;;
  390.     SunOS)
  391.         L="-h"                # /bin/sh built-in doesn't do -L
  392.         ;;
  393.     OS-with-no-symlinks)    # Need to set this correctly
  394.         L="-b"
  395.         NoSymlinks=YES
  396.         ;;
  397.     *)
  398.         L="-L"
  399.         ;;
  400.     esac
  401.  
  402.     if [ X"$1" = X-l ]; then
  403.         # Find the libc version, where needed
  404.         case "$OsName" in
  405.         Linux)
  406.             tmp="`ldd /bin/sh | grep libc.so 2> /dev/null`"
  407.             LibcPath=`expr "$tmp" : '[^/]*\(/[^ ]*\)'`
  408.  
  409.             # If strings is available, it is the best way to get the
  410.             # libc version.
  411.  
  412.             if CheckUtil -t strings; then
  413.                 tmp="`strings $LibcPath | grep -i 'c library'`"
  414.             else
  415.                 if [ $L $LibcPath ]; then
  416.                     tmp=`ReadLink $LibcPath`
  417.                     # This assumes libc-maj.min.teeny.so
  418.                     tmp="`echo $tmp | sed 's/-/ /'`"
  419.                 else
  420.                     tmp=""
  421.                 fi
  422.             fi
  423.  
  424.             OsLibcMajor=`expr "$tmp" : '.* \([0-9][0-9]*\)'`
  425.             OsLibcMinor=`expr "$tmp" : '.* [0-9][0-9]*\.\([0-9][0-9]*\)'`
  426.             OsLibcTeeny=`expr "$tmp" : '.* [0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\)'`
  427.             case "$OsLibcMajor" in
  428.             2)
  429.                 # 2 is the glibc version
  430.                 OsLibcMajor=6
  431.                 ;;
  432.             "")
  433.                 echo "Cannot find the glibc version."
  434.                 echo "Aborting."
  435.                 exit 1
  436.             esac
  437.             ;;
  438.         esac
  439.  
  440.         if [ X"$OsLibcMajor" != X ]; then
  441.             Echo "libc version is '$OsLibcMajor"
  442.             if [ X"$OsLibcMinor" != X ]; then
  443.                 Echo ".$OsLibcMinor"
  444.                 if [ X"$OsLibcTeeny" != X ]; then
  445.                     Echo ".$OsLibcTeeny"
  446.                     if [ $OsLibcTeeny -gt 80 ]; then
  447.                         OsLibcMinor=`expr $OsLibcMinor + 1`
  448.                     fi
  449.                 fi
  450.                 Echo "'"
  451.                 Echo " ($OsLibcMajor.$OsLibcMinor)"
  452.             else
  453.                 Echo "'"
  454.             fi
  455.             echo "."
  456.         fi
  457.     fi
  458.  
  459. #    if [ X"$needNL" = XYES ]; then
  460. #        echo ""
  461. #    fi
  462.     echo ""
  463. }
  464.  
  465. DoOsChecks()
  466. {
  467.     # Do some OS-specific checks
  468.  
  469.     case "$OsName" in
  470.     Linux)
  471.         # Check ldconfig
  472.         LDSO=`/sbin/ldconfig -v -n | awk '{ print $3 }'`
  473.         # if LDSO is empty ldconfig may be Version 2
  474.         if [ X"$LDSO" = X ]; then
  475.             LDSO=`/sbin/ldconfig -V | awk 'NR == 1 { print $4 }'`
  476.         fi
  477.         LDSOMIN=`echo $LDSO | awk -F[.-] '{ print $3 }'`
  478.         LDSOMID=`echo $LDSO | awk -F[.-] '{ print $2 }'`
  479.         LDSOMAJ=`echo $LDSO | awk -F[.-] '{ print $1 }'`
  480.         if [ "$LDSOMAJ" -gt 1 ]; then
  481.             : OK
  482.         else
  483.             if [ "$LDSOMID" -gt 7 ]; then
  484.                 : OK
  485.             else
  486.                 if [ "$LDSOMIN" -ge 14 ]; then
  487.                     : OK
  488.                 else
  489.                     echo ""
  490.                     echo "Before continuing, you will need to get a"
  491.                     echo "current version of ld.so.  Version 1.7.14 or"
  492.                     echo "newer will do."
  493.                     NEEDSOMETHING=YES
  494.                 fi
  495.             fi
  496.         fi
  497.         # The /dev/tty0 check is left out.  Presumably nobody has a system where
  498.         # this is missing any more.
  499.         ;;
  500.     esac
  501. }
  502.  
  503. FindDistName()
  504. {
  505.     case "$OsName" in
  506.     CYGWIN*)
  507.         case "$OsArch" in
  508.         i*86)
  509.             DistName="Cygwin"
  510.             ;;
  511.         *)
  512.             Message="Cygwin binaries are only available for ix86 platforms"
  513.             ;;
  514.         esac
  515.         ;;
  516.     Darwin)
  517.         case "$OsArch" in
  518.         Power*)
  519.             case "$OsVersion" in
  520.             1.[2-3]*)
  521.                 DistName="Darwin-ppc-1.x"
  522.                 ;;
  523.             1.4* | 5.*)
  524.                 DistName="Darwin-ppc-5.x"
  525.                 ;;
  526.             6.[0-2]*)
  527.                 if [ -d /System/Library/Frameworks/ApplicationServices.framework ]; then
  528.                     Message="No binaries available for Mac OS X 10.2.0 - 10.2.2"
  529.                 else
  530.                     DistName="Darwin-ppc-6.x"
  531.                 fi
  532.                 ;;
  533.             6.[3-9]*)
  534.                 DistName="Darwin-ppc-6.x"
  535.                 ;;
  536.             7.*)
  537.                 DistName="Darwin-ppc-7.x"
  538.                 ;;
  539.             [8-9].*)
  540.                 Message="No Darwin/ppc binaries available for this OS version.  Try Darwin-ppc-7.x"
  541.                 ;;
  542.             *)
  543.                 Message="No Darwin/ppc binaries available for this OS version"
  544.                 ;;
  545.             esac
  546.             ;;
  547.         x86*)
  548.             case "$OsVersion" in
  549.             1.4* | 5.*)
  550.                 DistName="Darwin-ix86-5.x"
  551.                 ;;
  552.             6.* | 7.*)
  553.                 DistName="Darwin-ix86-7.x"
  554.                 ;;
  555.             [8-9].*)
  556.                 Message="No Darwin/ix86 binaries available for this OS version.  Try Darwin-ix86-7.x"
  557.                 ;;
  558.             *)
  559.                 Message="No Darwin/ix86 binaries available for this OS version"
  560.                 ;;
  561.             esac
  562.             ;;
  563.         *)
  564.             Message="Darwin binaries are not available for this architecture"
  565.             ;;
  566.         esac
  567.         ;;
  568.     DGUX)    # Check this string
  569.         case "$OsArch" in
  570.         i*86)
  571.             DistName="DGUX-ix86"
  572.             ;;
  573.         *)
  574.             Message="DGUX binaries are only available for ix86 platforms"
  575.             ;;
  576.         esac
  577.         ;;
  578.     FreeBSD)
  579.         case "$OsArch" in
  580.         i386)
  581.             case "$OsVersion" in
  582.             2.2*)
  583.                 DistName="FreeBSD-2.2.x"
  584.                 ;;
  585.             3.*)
  586.                 case "$OsObjFormat" in
  587.                 ELF)
  588.                     DistName="FreeBSD-3.x"
  589.                     ;;
  590.                 *)
  591.                     Message="FreeBSD 3.x binaries are only available in ELF format"
  592.                     ;;
  593.                 esac
  594.                 ;;
  595.             4.*)
  596.                 DistName="FreeBSD-4.x"
  597.                 ;;
  598.             5.*)
  599.                 DistName="FreeBSD-5.x"
  600.                 ;;
  601.             *)
  602.                 Message="FreeBSD/i386 binaries are not available for this version"
  603.                 ;;
  604.             esac
  605.             ;;
  606.         alpha)
  607.             case "$OsVersion" in
  608.             3.*)
  609.                 DistName="FreeBSD-alpha-3.x"
  610.                 ;;
  611.             4.*)
  612.                 DistName="FreeBSD-alpha-4.x"
  613.                 ;;
  614.             5.*)
  615.                 DistName="FreeBSD-alpha-5.x"
  616.                 ;;
  617.             *)
  618.                 Message="FreeBSD/alpha binaries are not available for this version"
  619.                 ;;
  620.             esac
  621.             ;;
  622.         *)
  623.             Message="FreeBSD binaries are not available for this architecture"
  624.             ;;
  625.         esac
  626.         ;;
  627.     Linux)
  628.         case "$OsArch" in
  629.         i*86)
  630.             case "$OsLibcMajor" in
  631.             5)
  632.                 DistName="Linux-ix86-libc5"
  633.                 ;;
  634.             6)
  635.                 case "$OsLibcMinor" in
  636.                 0)
  637.                     DistName="Linux-ix86-glibc20"
  638.                     ;;
  639.                 1)
  640.                     DistName="Linux-ix86-glibc21"
  641.                     ;;
  642.                 2)
  643.                     DistName="Linux-ix86-glibc22"
  644.                     ;;
  645.                 3)
  646.                     DistName="Linux-ix86-glibc23"
  647.                     ;;
  648.                 *)
  649.                     Message="No dist available for glibc 2.$OsLibcMinor.  Try Linux-ix86-glibc23"
  650.                     ;;
  651.                 esac
  652.                 ;;
  653.             *)
  654.                 Message="No Linux/ix86 binaries for this libc version"
  655.                 ;;
  656.             esac
  657.             ;;
  658.         ppc)
  659.             case "$OsLibcMajor.$OsLibcMinor" in
  660.             6.1)
  661.                 DistName="Linux-ppc-glibc21"
  662.                 ;;
  663.             6.*)
  664.                 Message="No Linux/ppc binaries for glibc 2.$OsLibcMinor.  Try Linux-ppc-glibc21"
  665.                 ;;
  666.             *)
  667.                 Message="No Linux/ppc binaries for this libc version"
  668.                 ;;
  669.             esac
  670.             ;;
  671.         alpha)
  672.             case "$OsLibcMajor.$OsLibcMinor" in
  673.             6.1)
  674.                 DistName="Linux-alpha-glibc21"
  675.                 ;;
  676.             6.2)
  677.                 DistName="Linux-alpha-glibc22"
  678.                 ;;
  679.             6.*)
  680.                 Message="No Linux/alpha binaries for glibc 2.$OsLibcMinor.  Try Linux-alpha-glibc22"
  681.                 ;;
  682.             *)
  683.                 Message="No Linux/alpha binaries for this libc version"
  684.                 ;;
  685.             esac
  686.             ;;
  687.         mips)
  688.             case "$OsLibcMajor.$OsLibcMinor" in
  689.             6.0)
  690.                 DistName="Linux-mips-glibc20"
  691.                 ;;
  692.             *)
  693.                 Message="No Linux/Mips binaries for this libc version"
  694.                 ;;
  695.             esac
  696.             ;;
  697.         x86_64|amd64)
  698.             case "$OsLibcMajor.$OsLibcMinor" in
  699.             6.2)
  700.                 DistName="Linux-amd64-glibc22"
  701.                 ;;
  702.             6.[3-9]*)
  703.                 Message="No dist available for glibc 2.$OsLibcMinor.  Try Linux-amd64-glibc22"
  704.                 ;;
  705.             *)
  706.                 Message="No Linux/AMD64 binaries for this libc version"
  707.                 ;;
  708.             esac
  709.             ;;
  710.         
  711.         *)
  712.             Message="No Linux binaries available for this architecture"
  713.             ;;
  714.         esac
  715.         ;;
  716.     LynxOS)    # Check this
  717.         DistName="LynxOS"
  718.         ;;
  719.     NetBSD)
  720.         case "$OsArch" in
  721.         i386)
  722.             case "$OsVersion" in
  723.             1.[4-9]*)    # Check this
  724.                 case "$OsObjFormat" in
  725.                 a.out)
  726.                     DistName="NetBSD-1.4.x"
  727.                     ;;
  728.                 *)
  729.                     DistName="NetBSD-1.6 or NetBSD 1.5"
  730.                     ;;
  731.                 esac
  732.                 ;;
  733.             *)
  734.                 Message="No NetBSD/i386 binaries available for this version"
  735.                 ;;
  736.             esac
  737.             ;;
  738.         *)
  739.             Message="No NetBSD binaries available for this architecture"
  740.             ;;
  741.         esac
  742.         ;;
  743.     OpenBSD)
  744.         case "$OsArch" in
  745.         i386)
  746.             case "$OsVersion" in
  747.             2.*)
  748.                 DistName="OpenBSD-2.8"
  749.                 ;;
  750.             3.4*)    # Check this
  751.                 DistName="OpenBSD-3.4"
  752.                 ;;
  753.             *)
  754.                 Message="No OpenBSD/i386 binaries available for this version.   Try OpenBSD-3.4."
  755.                 ;;
  756.             esac
  757.             ;;
  758.         *)
  759.             Message="No OpenBSD binaries available for this architecture"
  760.             ;;
  761.         esac
  762.         ;;
  763.     SunOS)
  764.         case "$OsArch" in
  765.         i386)
  766.             case "$OsVersion" in
  767.             5.[67]*)
  768.                 DistName="Solaris"
  769.                 ;;
  770.             5.8*)
  771.                 DistName="Solaris-8"
  772.                 ;;
  773.             5.9*)
  774.                 DistName="Solaris-9"
  775.                 ;;
  776.             5.10*)
  777.                 Message="No Solaris/x86 binaries available for this version.  Try Solaris-9."
  778.                 ;;
  779.             esac
  780.             ;;
  781.         *)
  782.             Message="No SunOS/Solaris binaries available for this architecture"
  783.             ;;
  784.         esac
  785.         ;;
  786.     UNIX_SV)
  787.         case "$OsArch" in
  788.         i386)
  789.             case "$OsVersion" in
  790.             4.0*)
  791.                 DistName="SVR4.0"
  792.                 ;;
  793.             *)
  794.                 # More detailed version check??
  795.                 DistName="UnixWare"
  796.                 ;;
  797.             esac
  798.             ;;
  799.         *)
  800.             Message="No SYSV binaries available for this architecture"
  801.             ;;
  802.         esac
  803.         ;;
  804.     *)
  805.         Message="No binaries available for this OS"
  806.         ;;
  807.     esac
  808.  
  809.     if [ X"$DistName" != X ]; then
  810.         echo "Binary distribution name is '$DistName'"
  811.         echo ""
  812.         echo "If you don't find a binary distribution with this name, then"
  813.         echo "binaries for your platform are not available from XFree86.org."
  814.         echo ""
  815.     else
  816.         if [ X"$Message" = X ]; then
  817.             echo "Can't find which binary distribution you should use."
  818.             echo "Please send the output of this script to XFree86@XFree86.org."
  819.             echo ""
  820.         else
  821.             echo "$Message"
  822.             echo ""
  823.         fi
  824.     fi
  825. }
  826.  
  827. GetBindistVersion()
  828. {
  829.     VERSTARBALL=
  830.     if [ X$DOBASE = XYES ]; then
  831.         if [ -f Xbin.tgz ]; then
  832.             VERSTARBALL=Xbin.tgz
  833.         fi
  834.     else
  835.         if [ X$DOUPDATE = XYES ]; then
  836.             if [ -f Xupdate.tgz ]; then
  837.                 VERSTARBALL=Xupdate.tgz
  838.             fi
  839.         fi
  840.     fi
  841.     rm -f $VERSIONFILE
  842.     if [ X$VERSTARBALL != X ]; then
  843.         "$TAR" xzf $VERSTARBALL $VERSIONFILE
  844.     fi
  845.     if [ -f $VERSIONFILE ]; then
  846.         BINDISTVERSION=`cat $VERSIONFILE`
  847.         echo "Bindist version is $BINDISTVERSION"
  848.         BINDISTFULLPREFIX=`expr $BINDISTVERSION : '\([0-9]*\.[0-9]*\)\.'`
  849.         BINDISTPATCHLEVEL=`expr $BINDISTVERSION : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
  850.         case $BINDISTPATCHLEVEL in
  851.         99)
  852.             BINDISTFULLVERSION=$BINDISTVERSION
  853.             ;;
  854.         *)
  855.             BINDISTFULLVERSION=$BINDISTFULLPREFIX.0
  856.             ;;
  857.         esac
  858.     else
  859.         echo "Warning: can't detect the bindist version"
  860.     fi
  861.  
  862. }
  863.  
  864. CheckInstallType()
  865. {
  866.     # Check for explicit options
  867.  
  868.     if [ X"$1" != X ]; then
  869.         case $1 in
  870.         -update)
  871.             DOUPDATE=YES
  872.             DOBASE=NO
  873.             OPTS="$OPTS $1"
  874.             shift
  875.             ;;
  876.         -base|-full)
  877.             DOBASE=YES
  878.             DOUPDATE=NO
  879.             OPTS="$OPTS $1"
  880.             shift
  881.             ;;
  882.         esac
  883.     fi
  884.  
  885.     # Auto-detect based on what files are present
  886.  
  887.     if [ X"$DOUPDATE" = X ]; then
  888.         for i in $BASEDIST; do
  889.             if [ -f $i ]; then
  890.                 DOBASE=YES
  891.             fi
  892.         done
  893.         for i in $UPDATEDIST; do
  894.             if [ -f $i ]; then
  895.                 DOUPDATE=YES
  896.             fi
  897.         done
  898.         if [ X"$DOBASE" = XYES -a X"$DOUPDATE" = XYES ]; then
  899.             echo ""
  900.             echo "You appear to have binaries in the current directory for"
  901.             echo "both a full release and an update release.  The full release"
  902.             echo "must be installed before installing the update release."
  903.             echo ""
  904.             echo "The full release can be installed by re-running this script"
  905.             echo "with the '-base' option (sh $0 -base)."
  906.             echo ""
  907.             echo "The update release can be installed by re-running this script"
  908.             echo "with the '-update' option (sh $0 -update)."
  909.             echo ""
  910.             exit 1
  911.         fi
  912.     fi
  913.     GetBindistVersion
  914. }
  915.  
  916. InstallUpdate()
  917. {
  918.     # Check that there's an existing installation.
  919.  
  920.     missingDir=
  921.  
  922.     for d in $RUNDIR $RUNDIR/lib $RUNDIR/lib/X11 $RUNDIR/bin; do
  923.         if [ ! -d $d ]; then
  924.             missingDir="$missingDir $d"
  925.         fi
  926.     done
  927.  
  928.     if [ X$missingDir != X ]; then
  929.         echo ""
  930.         echo "You don't appear to have an existing installation of XFree86."
  931.         echo "You must install the most recent full release ($FULLVERSION)"
  932.         echo "before installing this update release."
  933.         echo ""
  934.         exit 1
  935.     fi
  936.  
  937.     if [ -f $XSERVERCMD ]; then
  938.         existingVer=`$XSERVERCMD -version 2>&1 | grep "XFree86 Version" | \
  939.                         awk '{print $3}'`
  940.         case $existingVer in
  941.         ${FULLPREFIX}.*)
  942.             ;;
  943.         *)
  944.             echo ""
  945.             echo "This update release should be installed on top of the most"
  946.             echo "recent full release ($FULLVERSION).  Your current version"
  947.             echo "appears to be $existingVer.  Please install $FULLVERSION"
  948.             echo "before installing this update release."
  949.             echo ""
  950.             exit 1
  951.         esac
  952.     fi
  953.  
  954.     echo ""
  955.     echo "Installing the update binary distribution"
  956.     echo ""
  957.     for i in $UPDATEDIST $EXTRAUPDATE; do
  958.         (cd $RUNDIR; "$EXTRACT" "$WDIR"/$i)
  959.     done
  960.  
  961.     # Make sure that $RUNDIR/lib isn't group/other writable
  962.     chmod og-w $RUNDIR/lib
  963.  
  964.     # Need to run ldconfig on some OSs
  965.     case "$OsName" in
  966.     FreeBSD|NetBSD|OpenBSD)
  967.         echo ""
  968.         echo "Running ldconfig"
  969.         # Make sure the directory isn't group-writable
  970.         chmod g-w $RUNDIR/lib
  971.         /sbin/ldconfig -m $RUNDIR/lib
  972.         ;;
  973.     Linux)
  974.         echo ""
  975.         echo "Running ldconfig"
  976.         /sbin/ldconfig $RUNDIR/lib
  977.         ;;
  978.     esac
  979.  
  980.     # Run mkfontdir in the local and misc directories to make sure that
  981.     # the fonts.dir files are up to date after the installation.
  982.     echo ""
  983.     for i in $FONTDIRS $EXTRAFONTDIRS; do
  984.         if [ -d $RUNDIR/lib/X11/fonts/$i ]; then
  985.             Echo "Updating the fonts.dir file in $RUNDIR/lib/X11/fonts/$i..."
  986.             $RUNDIR/bin/mkfontdir $RUNDIR/lib/X11/fonts/$i
  987.             echo ""
  988.         fi
  989.     done
  990.     # update Fontconfig cache
  991.     Echo "Updating the index of Freetype fonts..."
  992.     $RUNDIR/bin/fc-cache -v
  993.  
  994.     echo ""
  995.     echo "Update installation complete."
  996. }
  997.  
  998. CheckUtil expr
  999. CheckUtil grep
  1000.  
  1001. if [ X"$1" = "X-check" ]; then
  1002.     GetOsInfo -l
  1003.     FindDistName
  1004.     exit 0
  1005. fi
  1006.  
  1007. echo ""
  1008. echo "        Welcome to the XFree86 $SCRIPTVERSION installer"
  1009. echo ""
  1010. echo "You are strongly advised to backup your existing XFree86 installation"
  1011. echo "before proceeding.  This includes the $ROOTDIR/usr/X11R6, $ROOTDIR/etc/X11"
  1012. echo "and $ROOTDIR/etc/fonts directories.  The installation process will"
  1013. echo "overwrite existing files in those directories, and this may include"
  1014. echo "some configuration files that may have been customised."
  1015. echo ""
  1016. echo "If you are installing a version different from $SCRIPTVERSION, you"
  1017. echo "may need an updated version of this installer script."
  1018. echo ""
  1019. ContinueNo
  1020.  
  1021. # Should check if uid is zero
  1022.  
  1023. # Check if $DISPLAY is set, and warn
  1024.  
  1025. if [ X"$DISPLAY" != X ]; then
  1026.     echo "\$DISPLAY is set, which may indicate that you are running this"
  1027.     echo "installation from an X session.  It is recommended that X not be"
  1028.     echo "running while doing the installation."
  1029.     echo ""
  1030.     ContinueNo
  1031. fi
  1032.  
  1033. # First, do some preliminary checks
  1034.  
  1035. GetOsInfo
  1036.  
  1037. CheckUtil sed
  1038. CheckUtil fgrep 
  1039. CheckUtil basename
  1040.  
  1041. # Make OS-specific adjustments
  1042.  
  1043. case "$OsName" in
  1044. CYGWIN*)
  1045.     SERVDIST="Xxserv.tgz"
  1046.     ;;
  1047. Darwin)
  1048.     UPDATEDIST="Xupdate.tgz Xdocupd.tgz"
  1049.         # On Mac OS X, we require Quartz support
  1050.         if [ -d /System/Library/Frameworks/ApplicationServices.framework ]; then
  1051.             SERVDIST="Xxserv.tgz Xquartz.tgz"
  1052.         else
  1053.             SERVDIST="Xxserv.tgz"
  1054.         fi
  1055.     ;;
  1056. FreeBSD)
  1057.     VARDIST="Xvar.tgz"
  1058.     XKBDBDIR="$VARDIR/db/xkb"
  1059.     EXTRAOPTDIST="Xdrm.tgz"
  1060.     ;;
  1061. OpenBSD)
  1062.     VARDIST="Xvar.tgz"
  1063.     XKBDBDIR="$VARDIR/db/xkb"
  1064.     ;;
  1065. NetBSD)
  1066.     EXTRAOPTDIST="Xdrm.tgz"
  1067.     ;;
  1068. Interactive)    # Need the correct name for this
  1069.     EXTRADIST="Xbin1.tgz"
  1070.     EXTRAOPTDIST="Xxdm.tgz"
  1071.     ;;
  1072. Linux)
  1073.     VARDIST="Xvar.tgz"
  1074.     XKBDBDIR="$VARDIR/lib/xkb"
  1075.     EXTRAOPTDIST="Xdrm.tgz"
  1076.     ;;
  1077. esac
  1078.  
  1079. # Check for extract and extract.exe, and check that they are usable.
  1080. #
  1081. # This test may not be fool-proof.  A FreeBSD/ELF binary downloaded in
  1082. # ASCII mode passed it :-(.
  1083. #
  1084. if [ -f extract ]; then
  1085.     ExtractExists=YES
  1086.     chmod +x extract
  1087.     if ./extract --version | sed 1q | \
  1088.       fgrep "extract (XFree86 version" > /dev/null 2>&1; then
  1089.         ExtractOK=YES
  1090.     else
  1091.         echo "extract doesn't work properly, renaming it to 'extract.bad'"
  1092.         rm -f extract.bad
  1093.         mv extract extract.bad
  1094.     fi
  1095. fi
  1096. if [ X"$ExtractOK" != XYES ]; then
  1097.     if [ -f extract.exe ]; then
  1098.         ExtractExeExists=YES
  1099.         rm -f extract
  1100.         ln extract.exe extract
  1101.         chmod +x extract
  1102.         if ./extract --version | sed 1q | \
  1103.           fgrep "extract (XFree86 version" > /dev/null 2>&1; then
  1104.             ExtractOK=YES
  1105.         else
  1106.             echo "extract.exe doesn't work properly, renaming it to"
  1107.             echo "'extract.exe.bad'"
  1108.             rm -f extract.exe.bad
  1109.             mv extract.exe extract.exe.bad
  1110.             rm -f extract
  1111.         fi
  1112.     fi
  1113. fi
  1114. if [ X"$ExtractOK" != XYES ]; then
  1115.     echo ""
  1116.     if [ X"$ExtractExists" = XYES -a X"$ExtractExeExists" = XYES ]; then
  1117.         echo "The versions of 'extract' and 'extract.exe' you have do not run'"
  1118.         echo "correctly.  Make sure that you have downloaded the correct"
  1119.         echo "binaries for your system.  To find out which is correct,"
  1120.         echo "run 'sh $0 -check'."
  1121.     fi
  1122.     if [ X"$ExtractExists" = XYES -a X"$ExtractExeExists" != XYES ]; then
  1123.         echo "The version of 'extract' you have does not run correctly."
  1124.         echo "This is most commonly due to problems downloading this file"
  1125.         echo "with some web browsers.  You may get better results if you"
  1126.         echo "download the version called 'extract.exe' and try again."
  1127.     fi
  1128.     if [ X"$ExtractExists" != XYES -a X"$ExtractExeExists" = XYES ]; then
  1129.         echo "The version of 'extract.exe' you have does not run correctly."
  1130.         echo "Make sure that you have downloaded the correct binaries for your"
  1131.         echo "system.  To find out which is correct, run 'sh $0 -check'."
  1132.     fi
  1133.     if [ X"$ExtractExists" != XYES -a X"$ExtractExeExists" != XYES ]; then
  1134.         echo "You need to download the 'extract' (or 'extract.exe') utility"
  1135.         echo "and put it in this directory."
  1136.     fi
  1137.     echo ""
  1138.     echo "When you have corrected the problem, please re-run 'sh $0$OPTS'"
  1139.     echo "to proceed with the installation."
  1140.     echo ""
  1141.     exit 1
  1142. fi
  1143.  
  1144. # Link extract to gnu-tar so it can also be used as a regular tar
  1145. case "$OsName" in
  1146. CYGWIN*)
  1147.     rm -f gnu-tar
  1148.     ln -s extract.exe gnu-tar
  1149.     ;;
  1150. *)
  1151.     rm -f gnu-tar
  1152.     ln extract gnu-tar
  1153.     ;;
  1154. esac
  1155.  
  1156. EXTRACT="$WDIR"/extract
  1157. TAR="$WDIR"/gnu-tar
  1158.  
  1159. CheckInstallType "$@"
  1160.  
  1161. if [ X"$DOUPDATE" = XYES ]; then
  1162.     REQUIREDFILES=" \
  1163.         extract \
  1164.         $UPDATEDIST \
  1165.         $EXTRAUPDATE
  1166.         "
  1167. else
  1168.     REQUIREDFILES=" \
  1169.         extract \
  1170.         $BASEDIST \
  1171.         $ETCDIST \
  1172.         $VARDIST \
  1173.         $SERVDIST \
  1174.         $EXTRADIST \
  1175.         "
  1176. fi
  1177.  
  1178. echo "Checking for required files ..."
  1179. Needed=""
  1180.  
  1181. for i in $REQUIREDFILES; do
  1182.     if [ ! -f $i ]; then
  1183.         Needed="$Needed $i"
  1184.     fi
  1185. done
  1186. if [ X"$Needed" != X ]; then
  1187.     echo ""
  1188.     echo "The files:"
  1189.     echo ""
  1190.     echo "$Needed"
  1191.     echo ""
  1192.     echo "must be present in the current directory to proceed with the"
  1193.     echo "installation.  You should be able to find it at the same place"
  1194.     echo "you picked up the rest of the XFree86 binary distribution."
  1195.     echo "Please re-run 'sh $0$OPTS' to proceed with the installation when"
  1196.     echo "you have them."
  1197.     echo ""
  1198.     exit 1
  1199. fi
  1200.  
  1201. DoOsChecks
  1202.  
  1203. if [ X"$NEEDSOMETHING" != X ]; then
  1204.     echo ""
  1205.     echo "Please re-run 'sh $0$OPTS' to proceed with the installation after you"
  1206.     echo "have made the required updates."
  1207.     echo ""
  1208.     exit 1
  1209. fi
  1210.  
  1211. echo ""
  1212.  
  1213. # Set version variables if the bindist version was successfully auto-detected.
  1214.  
  1215. if [ X$BINDISTVERSION != X ]; then
  1216.     VERSION=$BINDISTVERSION
  1217. fi
  1218. if [ X$BINDISTFULLVERSION != X ]; then
  1219.     FULLVERSION=$BINDISTFULLVERSION
  1220. fi
  1221. if [ X$BINDISTPATCHLEVEL != X ]; then
  1222.     PATCHLEVEL=$BINDISTPATCHLEVEL
  1223. fi
  1224. if [ X$BINDISTFULLPREFIX != X ]; then
  1225.     FULLPREFIX=$BINDISTFULLPREFIX
  1226. fi
  1227.  
  1228. if [ X"$DOUPDATE" = XYES ]; then
  1229.     InstallUpdate
  1230.     exit 0
  1231. fi
  1232.  
  1233. # Create $RUNDIR, $ETCDIR/X11 and $ETCDIR/fonts if they don't already exist
  1234.  
  1235. if [ ! -d $RUNDIR ]; then
  1236.     NewRunDir=YES
  1237.     echo "Creating $RUNDIR"
  1238.     mkdir $RUNDIR
  1239. fi
  1240. if [ ! -d $RUNDIR/lib ]; then
  1241.     echo "Creating $RUNDIR/lib"
  1242.     mkdir $RUNDIR/lib
  1243. fi
  1244. if [ ! -d $RUNDIR/lib/X11 ]; then
  1245.     echo "Creating $RUNDIR/lib/X11"
  1246.     mkdir $RUNDIR/lib/X11
  1247. fi
  1248. if [ ! -d $ETCDIR/X11 ]; then
  1249.     NewEtcDir=YES
  1250.     echo "Creating $ETCDIR/X11"
  1251.     mkdir $ETCDIR/X11
  1252. fi
  1253. if [ ! -d $ETCDIR/fonts ]; then
  1254.     echo "Creating $ETCDIR/fonts"
  1255.     mkdir $ETCDIR/fonts
  1256. fi
  1257.  
  1258. if [ -d $RUNDIR -a -d $RUNDIR/bin -a -d $RUNDIR/lib ]; then
  1259.     echo ""
  1260.     echo "You appear to have an existing installation of X.  Continuing will"
  1261.     echo "overwrite it.  You will, however, have the option of being prompted"
  1262.     echo "before most configuration files are overwritten."
  1263.     ContinueYes
  1264. fi
  1265.  
  1266. if [ X"$OLDFILES" != X ]; then
  1267.     echo ""
  1268.     echo "Removing some old files that are no longer required..."
  1269.     for i in $OLDFILES; do
  1270.         if [ -f $i ]; then
  1271.             echo "    removing old file $i"
  1272.             rm -f $i
  1273.         fi
  1274.     done
  1275.     echo ""
  1276. fi
  1277.  
  1278. if [ X"$OLDDIRS" != X ]; then
  1279.     echo ""
  1280.     echo "Removing some old directories that are no longer required..."
  1281.     for i in $OLDDIRS; do
  1282.         if [ -d $i ]; then
  1283.             echo "    removing old directory $i"
  1284.             rm -fr $i
  1285.         fi
  1286.     done
  1287.     echo ""
  1288. fi
  1289.  
  1290. if [ ! -d $RUNDIR/lib/X11/xkb ]; then
  1291.     echo "Creating $RUNDIR/lib/X11/xkb"
  1292.     mkdir $RUNDIR/lib/X11/xkb
  1293. fi
  1294. # Check for config file directories that may need to be moved.
  1295.  
  1296. EtcDirToMove=
  1297. EtcFileToMove=
  1298. if [ X"$NoSymLinks" != XYES ]; then
  1299.     for i in $ETCDLINKS; do
  1300.         if [ -d $RUNDIR/lib/X11/$i -a ! $L $RUNDIR/lib/X11/$i ]; then
  1301.             EtcDirToMove="$EtcDirToMove $i"
  1302.         fi
  1303.     done
  1304.     for i in $ETCFLINKS; do
  1305.         if [ -f $RUNDIR/lib/X11/$i -a ! $L $RUNDIR/lib/X11/$i ]; then
  1306.             EtcFileToMove="$EtcFileToMove $i"
  1307.         fi
  1308.     done
  1309. fi
  1310.  
  1311. if [ X"$EtcDirToMove" != X -o X"$EtcFileToMove" != X ]; then
  1312.     echo "XFree86 now installs most customisable configuration files under"
  1313.     echo "$ETCDIR/X11 instead of under $RUNDIR/lib/X11, and has symbolic links"
  1314.     echo "under $RUNDIR/lib/X11 that point to $ETCDIR.  You currently have"
  1315.     echo "files under the following subdirectories of $RUNDIR/lib/X11:"
  1316.     echo ""
  1317.     echo "$EtcDirToMove $EtcFileToMove"
  1318.     echo ""
  1319.     echo "Do you want to move them to $ETCDIR/X11 and create the necessary"
  1320.     Echo "links? (y/n) [y] "
  1321.     read response
  1322.     case "$response" in
  1323.     [nN]*)
  1324.         echo ""
  1325.         echo "Note: this means that your run-time config files will remain"
  1326.         echo "in the old $RUNDIR/lib/X11 location."
  1327.         NoSymLinks=YES;
  1328.         ;;
  1329.     esac
  1330.     echo ""
  1331.     if [ X"$NoSymLinks" != XYES ]; then
  1332.         for i in $EtcDirToMove; do
  1333.             echo "Moving $RUNDIR/lib/X11/$i to $ETCDIR/X11/$i ..."
  1334.             if [ ! -d $ETCDIR/X11/$i ]; then
  1335.                 mkdir $ETCDIR/X11/$i
  1336.             fi
  1337.             "$TAR" -C $RUNDIR/lib/X11/$i -c -f - . | \
  1338.                 "$TAR" -C $ETCDIR/X11/$i -v -x -p -U -f - && \
  1339.                 rm -fr $RUNDIR/lib/X11/$i && \
  1340.                 ln -s $ETCDIR/X11/$i $RUNDIR/lib/X11/$i
  1341.         done
  1342.         for i in $EtcFileToMove; do
  1343.             echo "Moving $RUNDIR/lib/X11/$i to $ETCDIR/X11/$i ..."
  1344.             cp -p $RUNDIR/lib/X11/$i $ETCDIR/X11/$i && \
  1345.                 rm -fr $RUNDIR/lib/X11/$i && \
  1346.                 ln -s $ETCDIR/X11/$i $RUNDIR/lib/X11/$i
  1347.         done
  1348.     fi
  1349. fi
  1350.  
  1351. # Maybe allow a backup of the config files to be made?
  1352.  
  1353. # Extract Xetc.tgz into a temporary location, and prompt for moving the
  1354. # files.
  1355.  
  1356. echo "Extracting $ETCDIST into a temporary location ..."
  1357. rm -fr .etctmp
  1358. mkdir .etctmp
  1359. (cd .etctmp; "$EXTRACT" "$WDIR"/$ETCDIST)
  1360. for i in $ETCDLINKS; do
  1361.     DoCopy=YES
  1362.     if [ -d $RUNDIR/lib/X11/$i ]; then
  1363.         Echo "Do you want to overwrite the $i config files? (y/n) [n] "
  1364.         read response
  1365.         case "$response" in
  1366.         [yY]*)
  1367.             : OK
  1368.             ;;
  1369.         *)
  1370.             DoCopy=NO
  1371.             ;;
  1372.         esac
  1373.     fi
  1374.     if [ $DoCopy = YES ]; then
  1375.         echo "Installing the $i config files ..."
  1376.         if [ X"$NoSymLinks" != XYES ]; then
  1377.             if [ ! -d $ETCDIR/X11/$i ]; then
  1378.                 mkdir $ETCDIR/X11/$i
  1379.             fi
  1380.             if [ ! -d $RUNDIR/lib/X11/$i ]; then
  1381.                 ln -s $ETCDIR/X11/$i $RUNDIR/lib/X11/$i
  1382.             fi
  1383.         else
  1384.             if [ ! -d $RUNDIR/lib/X11/$i ]; then
  1385.                 mkdir $RUNDIR/lib/X11/$i
  1386.             fi
  1387.         fi
  1388.         "$TAR" -C .etctmp/X11/$i -c -f - . | \
  1389.             "$TAR" -C $RUNDIR/lib/X11/$i -v -x -p -U -f -
  1390.     fi
  1391. done
  1392. for i in $ETCFLINKS; do
  1393.     DoCopy=YES
  1394.     if [ -f $RUNDIR/lib/X11/$i ]; then
  1395.         Echo "Do you want to overwrite the $i config file? (y/n) [n] "
  1396.         read response
  1397.         case "$response" in
  1398.         [yY]*)
  1399.             : OK
  1400.             ;;
  1401.         *)
  1402.             DoCopy=NO
  1403.             ;;
  1404.         esac
  1405.     fi
  1406.     if [ $DoCopy = YES ]; then
  1407.         echo "Installing the $i config file ..."
  1408.         if [ X"$NoSymLinks" != XYES ]; then
  1409.             if [ ! -f $RUNDIR/lib/X11/$i ]; then
  1410.                 ln -s $ETCDIR/X11/$i $RUNDIR/lib/X11/$i
  1411.             fi
  1412.         fi
  1413.         (set -x; cp -p .etctmp/X11/$i $RUNDIR/lib/X11/$i)
  1414.     fi
  1415. done
  1416. if [ X"$XKBDIR" != X ]; then
  1417.     if [ X"$NoSymLinks" = XYES ]; then
  1418.         XKBDIR=$RUNDIR/lib/X11/xkb/compiled
  1419.     fi
  1420.     if [ -d .etctmp/X11/xkb ]; then
  1421.         if [ ! -d $XKBDIR ]; then
  1422.             mkdir $XKBDIR
  1423.         fi
  1424.         "$TAR" -C .etctmp/X11/xkb -c -f - . | \
  1425.             "$TAR" -C $XKBDIR -v -x -p -U -f -
  1426.     fi
  1427. fi
  1428. for i in $ETCFONTFILES; do
  1429.     DoCopy=YES
  1430.     if [ -f $ETCDIR/fonts/$i ]; then
  1431.         Echo "Do you want to overwrite the $i config file? (y/n) [n] "
  1432.         read response
  1433.         case "$response" in
  1434.         [yY]*)
  1435.             : OK
  1436.             ;;
  1437.         *)
  1438.             DoCopy=NO
  1439.             ;;
  1440.         esac
  1441.     fi
  1442.     if [ $DoCopy = YES ]; then
  1443.         echo "Installing the $i config file ..."
  1444.         (set -x; cp -p .etctmp/fonts/$i $ETCDIR/fonts/$i)
  1445.     fi
  1446. done
  1447. rm -fr .etctmp
  1448.  
  1449. echo ""
  1450. echo "Installing the mandatory parts of the binary distribution"
  1451. echo ""
  1452. for i in $BASEDIST $SERVDIST; do
  1453.     (cd $RUNDIR; "$EXTRACT" "$WDIR"/$i)
  1454. done
  1455. if [ X"$VARDIST" != X ]; then
  1456.     (cd $VARDIR; "$EXTRACT" "$WDIR"/$VARDIST)
  1457. fi
  1458.  
  1459. if [ X"$XKBDIR" != X -a X"$XKBDIR" != X"$RUNDIR/lib/X11/xkb/compiled" -a \
  1460.      X"$XKBDBDIR" != X ]; then
  1461.     rm -fr $RUNDIR/lib/X11/xkb/compiled
  1462.     ln -s $XKBDBDIR $RUNDIR/lib/X11/xkb/compiled
  1463. fi
  1464.  
  1465. echo "Checking for post-release updates ..."
  1466. for i in $UPDDIST; do
  1467.     if [ -f $i ]; then
  1468.         Echo "Do you want to install update $i (`Description $i`)? (y/n) [y] "
  1469.         read response
  1470.         case "$response" in
  1471.         [nN]*)
  1472.             : skip this one
  1473.             ;;
  1474.         *)
  1475.             (cd $RUNDIR; "$EXTRACT" "$WDIR"/$i)
  1476.             ;;
  1477.         esac
  1478.     fi
  1479. done
  1480.  
  1481. echo "Checking for optional components to install ..."
  1482. for i in $OPTDIST $EXTRAOPTDIST; do
  1483.     if [ -f $i ]; then
  1484.         Echo "Do you want to install $i (`Description $i`)? (y/n) [y] "
  1485.         read response
  1486.         case "$response" in
  1487.         [nN]*)
  1488.             : skip this one
  1489.             ;;
  1490.         *)
  1491.             (cd $RUNDIR; "$EXTRACT" "$WDIR"/$i)
  1492.             ;;
  1493.         esac
  1494.     fi
  1495. done
  1496.  
  1497. # Check if the system has a termcap file
  1498. TERMCAP1DIR=$ROOTDIR/usr/share
  1499. TERMCAP2=$ROOTDIR/etc/termcap
  1500. if [ -d $TERMCAP1DIR ]; then
  1501.     TERMCAP1=`find $TERMCAP1DIR -type f -name termcap -print 2> /dev/null`
  1502.     if [ x"$TERMCAP1" != x ]; then
  1503.         TERMCAPFILE="$TERMCAP1"
  1504.     fi
  1505. fi
  1506. if [ x"$TERMCAPFILE" = x ]; then
  1507.     if [ -f $TERMCAP2 ]; then
  1508.         TERMCAPFILE="$TERMCAP2"
  1509.     fi
  1510. fi
  1511.  
  1512. # Override this for some OSs
  1513.  
  1514. case "$OsName" in
  1515. OpenBSD)
  1516.     TERMCAPFILE=""
  1517.     ;;
  1518. esac
  1519.  
  1520. if [ X"$TERMCAPFILE" != X ]; then
  1521.     echo ""
  1522.     echo "You appear to have a termcap file: $TERMCAPFILE"
  1523.     echo "This should be edited manually to replace the xterm entries"
  1524.     echo "with those in $RUNDIR/lib/X11/etc/xterm.termcap"
  1525.     echo ""
  1526.     echo "Note: the new xterm entries are required to take full advantage"
  1527.     echo "of new features, but they may cause problems when used with"
  1528.     echo "older versions of xterm.  A terminal type 'xterm-r6' is included"
  1529.     echo "for compatibility with the standard X11R6 version of xterm."
  1530. fi
  1531.  
  1532. # Check for terminfo, and update the xterm entry
  1533. TINFODIR=$ROOTDIR/usr/lib/terminfo
  1534. # Does this list need to be updated?
  1535. OLDTINFO=" \
  1536.     x/xterm \
  1537.     x/xterms \
  1538.     x/xterm-24 \
  1539.     x/xterm-vi \
  1540.     x/xterm-65 \
  1541.     x/xterm-bold \
  1542.     x/xtermm \
  1543.     x/xterm-boldso \
  1544.     x/xterm-ic \
  1545.     x/xterm-r6 \
  1546.     x/xterm-old \
  1547.     x/xterm-r5 \
  1548.     v/vs100"
  1549.  
  1550. if [ -d $TINFODIR ]; then
  1551.     echo ""
  1552.     echo "You appear to have a terminfo directory: $TINFODIR"
  1553.     echo "New xterm terminfo entries can be installed now."
  1554.     echo ""
  1555.     echo "Note: the new xterm entries are required to take full advantage"
  1556.     echo "of new features, but they may cause problems when used with"
  1557.     echo "older versions of xterm.  A terminal type 'xterm-r6' is included"
  1558.     echo "for compatibility with the standard X11R6 version of xterm."
  1559.     echo ""
  1560.     echo "Do you wish to have the new xterm terminfo entries installed"
  1561.     Echo "now (y/n)? [n] "
  1562.     read response
  1563.     case "$response" in
  1564.     [yY]*)
  1565.         echo ""
  1566.         for t in $OLDTINFO; do
  1567.             if [ -f $TINFODIR/$t ]; then
  1568.                 echo "Moving old terminfo file $TINFODIR/$t to $TINFODIR/$t.bak"
  1569.                 rm -f $TINFODIR/$t.bak
  1570.                 mv -f $TINFODIR/$t $TINFODIR/$t.bak
  1571.             fi
  1572.         done
  1573.         echo ""
  1574.         echo "Installing new terminfo entries for xterm."
  1575.         echo ""
  1576.         echo "On some systems you may get warnings from tic about 'meml'"
  1577.         echo "and 'memu'.  These warnings can safely be ignored."
  1578.         echo ""
  1579.         tic $RUNDIR/lib/X11/etc/xterm.terminfo
  1580.         ;;
  1581.     *)
  1582.         echo ""
  1583.         echo "Not installing new terminfo entries for xterm."
  1584.         echo "They can be installed later by running:"
  1585.         echo ""
  1586.         echo "  tic $RUNDIR/lib/X11/etc/xterm.terminfo"
  1587.         ;;
  1588.     esac
  1589. fi
  1590.  
  1591. if [ -f $RUNDIR/lib/libGL.so ]; then
  1592.     existing=""
  1593.     if [ -f $ROOTDIR/usr/lib/libGL.so ]; then
  1594.         existing="$existing /usr/lib/libGL.so"
  1595.     fi
  1596.     if [ -f $ROOTDIR/usr/lib/libGL.so.1 ]; then
  1597.         existing="$existing /usr/lib/libGL.so.1"
  1598.     fi
  1599.     if [ -d $ROOTDIR/usr/include/GL ]; then
  1600.         existing="$existing /usr/include/GL"
  1601.     fi
  1602.     echo ""
  1603.     echo "On some platforms (e.g., Linux), the OpenGL standard requires"
  1604.     echo "that the GL shared library and header files be visible from the"
  1605.     echo "standard system lib and include directories ($ROOTDIR/usr/lib and"
  1606.     echo "$ROOTDIR/usr/include).  This can be done by installing links in those"
  1607.     echo "directories to the files that have been installed under $RUNDIR."
  1608.     echo ""
  1609.     echo "NOTE: installing these links will overwrite existing files or"
  1610.     echo "links."
  1611.     if [ X"$existing" != X ]; then
  1612.         echo ""
  1613.         echo "The follwing links/files/directories already exist:"
  1614.         echo ""
  1615.         ls -ld $existing
  1616.     fi
  1617.     echo ""
  1618.     Echo "Do you wish to have the (new) links installed (y/n)? [n] "
  1619.     read response
  1620.     case "$response" in
  1621.     [yY]*)
  1622.         if [ ! -d $ROOTDIR/usr/lib ]; then
  1623.             echo "Creating $ROOTDIR/usr/lib"
  1624.             mkdir $ROOTDIR/usr/lib
  1625.         fi
  1626.         if [ ! -d $ROOTDIR/usr/include ]; then
  1627.             echo "Creating $ROOTDIR/usr/include"
  1628.             mkdir $ROOTDIR/usr/include
  1629.         fi
  1630.         rm -f $ROOTDIR/usr/lib/libGL.so
  1631.         if [ ! -f $ROOTDIR/usr/lib/libGL.so ]; then
  1632.             echo "Creating link from $RUNDIR/lib/libGL.so to $ROOTDIR/usr/lib/libGL.so"
  1633.             ln -s $RUNDIR/lib/libGL.so $ROOTDIR/usr/lib/libGL.so
  1634.         else
  1635.             echo "Could not remove existing $ROOTDIR/usr/lib/libGL.so, so the new"
  1636.             echo "link has not been created."
  1637.         fi
  1638.         rm -f $ROOTDIR/usr/lib/libGL.so.1
  1639.         if [ ! -f $ROOTDIR/usr/lib/libGL.so.1 ]; then
  1640.             echo "Creating link from $RUNDIR/lib/libGL.so.1 to $ROOTDIR/usr/lib/libGL.so.1"
  1641.             ln -s $RUNDIR/lib/libGL.so.1 $ROOTDIR/usr/lib/libGL.so.1
  1642.         else
  1643.             echo "Could not remove existing $ROOTDIR/usr/lib/libGL.so.1, so the new"
  1644.             echo "link has not been created."
  1645.         fi
  1646.         if [ -d $RUNDIR/include/GL ]; then
  1647.             rm -f $ROOTDIR/usr/include/GL
  1648.             if [ ! -d $ROOTDIR/usr/include/GL ]; then
  1649.                 echo "Creating link from $RUNDIR/include/GL to $ROOTDIR/usr/include/GL"
  1650.                 ln -s $RUNDIR/include/GL $ROOTDIR/usr/include/GL
  1651.             else
  1652.                 echo "Could not remove existing $ROOTDIR/usr/include/GL, so the new"
  1653.                 echo "link has not been created."
  1654.             fi
  1655.         fi
  1656.         ;;
  1657.     esac
  1658. fi
  1659.  
  1660. # Check for documentation files with old extensions and remove them.
  1661. for i in $RUNDIR/lib/X11/doc/*.txt; do
  1662.     base=`basename $i .txt`
  1663.     old="RUNDIR/lib/X11/doc/$base.TXT"
  1664.     if [ -f "$old" ]; then
  1665.         echo "Removing old file $old (replaced by $base.txt)"
  1666.         rm -f "$old"
  1667.     fi
  1668. done
  1669.  
  1670. for i in $RUNDIR/lib/X11/doc/PostScript/*.PS; do
  1671.     base=`basename $i .ps`
  1672.     old="RUNDIR/lib/X11/doc/$base.PS"
  1673.     if [ -f "$old" ]; then
  1674.         echo "Removing old file $old (replaced by $base.ps)"
  1675.         rm -f "$old"
  1676.     fi
  1677. done
  1678.  
  1679.  
  1680. # Need to run ldconfig on some OSs
  1681. case "$OsName" in
  1682. FreeBSD|NetBSD|OpenBSD)
  1683.     echo ""
  1684.     echo "Running ldconfig"
  1685.     # Make sure the directory isn't group-writable
  1686.     chmod g-w $RUNDIR/lib
  1687.     /sbin/ldconfig -m $RUNDIR/lib
  1688.     ;;
  1689. Linux)
  1690.     echo ""
  1691.     echo "Running ldconfig"
  1692.     /sbin/ldconfig $RUNDIR/lib
  1693.     ;;
  1694. esac
  1695.  
  1696. # Run mkfontdir in the local and misc directories to make sure that
  1697. # the fonts.dir files are up to date after the installation.
  1698. echo ""
  1699. for i in $FONTDIRS $EXTRAFONTDIRS; do
  1700.     if [ -d $RUNDIR/lib/X11/fonts/$i ]; then
  1701.         Echo "Updating the fonts.dir file in $RUNDIR/lib/X11/fonts/$i..."
  1702.         $RUNDIR/bin/mkfontdir $RUNDIR/lib/X11/fonts/$i
  1703.         echo ""
  1704.     fi
  1705. done
  1706.  
  1707.  
  1708. if [ -f $RUNDIR/bin/rstartd ]; then
  1709.     echo ""
  1710.     echo "If you are going to use rstart and $RUNDIR/bin isn't in the"
  1711.     echo "default path for commands run remotely via rsh, you will need"
  1712.     echo "a link to rstartd installed in $ROOTDIR/usr/bin."
  1713.     echo ""
  1714.     Echo "Do you wish to have this link installed (y/n)? [n] "
  1715.     read response
  1716.     case "$response" in
  1717.     [yY]*)
  1718.         if [ ! -d $ROOTDIR/usr/bin ]; then
  1719.             echo "Creating $ROOTDIR/usr/bin"
  1720.             mkdir $ROOTDIR/usr/bin
  1721.         fi
  1722.         echo "Creating link from $RUNDIR/bin/rstartd to $ROOTDIR/usr/bin/rstartd"
  1723.         rm -f $ROOTDIR/usr/bin/rstartd
  1724.         ln -s $RUNDIR/bin/rstartd $ROOTDIR/usr/bin/rstartd
  1725.         ;;
  1726.     esac
  1727. fi
  1728.  
  1729.  
  1730. # Finally, check for old 3.3.x modules that will conflict with 4.x
  1731. if [ -d $RUNDIR/lib/modules ]; then
  1732.     for i in $OLDMODULES; do
  1733.         if [ -f $RUNDIR/lib/modules/$i ]; then
  1734.             ModList="$ModList $i"
  1735.         fi
  1736.     done
  1737.     if [ X"$ModList" != X ]; then
  1738.         echo ""
  1739.         echo "The following 3.3.x X server modules were found in"
  1740.         echo "$RUNDIR/lib/modules, and they may cause problems when running"
  1741.         echo "$VERSION:"
  1742.         echo ""
  1743.         echo "  $ModList"
  1744.         echo ""
  1745.         echo "Do you want them moved to $RUNDIR/lib/modules/old?"
  1746.         echo "Note: that if you want to use them with 3.3.x again, you'll"
  1747.         Echo "need to move them back manually. (y/n) [n] "
  1748.         read response
  1749.         case "$response" in
  1750.         [yY]*)
  1751.             if [ ! -d $RUNDIR/lib/modules/old ]; then
  1752.                 echo ""
  1753.                 echo "Creating $RUNDIR/lib/modules/old"
  1754.                 mkdir $RUNDIR/lib/modules/old
  1755.             else
  1756.                 echo ""
  1757.             fi
  1758.             if [ -d $RUNDIR/lib/modules/old ]; then
  1759.                 for i in $ModList; do
  1760.                     echo "Moving $i to $RUNDIR/lib/modules/old"
  1761.                     mv $RUNDIR/lib/modules/$i $RUNDIR/lib/modules/old/$i
  1762.                 done
  1763.             else
  1764.                 echo "Failed to create directory $RUNDIR/lib/modules/old"
  1765.             fi
  1766.             ;;
  1767.         *)
  1768.             echo ""
  1769.             echo "Make sure that you rename, move or delete the old modules"
  1770.             echo "before running $VERSION."
  1771.         esac
  1772.     fi
  1773.     # Some distributions have old codeconv modules
  1774.     if [ -d $RUNDIR/lib/modules/codeconv ]; then
  1775.         if [ -f $RUNDIR/lib/modules/codeconv/ISO8859_1.so ]; then
  1776.             echo ""
  1777.             echo "Warning: it looks like there are some old *.so modules"
  1778.             echo "in $RUNDIR/lib/modules/codeconv.  You may need to rename,"
  1779.             echo "move or delete them if you use the xtt font module."
  1780.         fi
  1781.     fi
  1782. fi
  1783.  
  1784. case "$OsName" in
  1785. FreeBSD|NetBSD)
  1786.     DRMBUILDDIR="$RUNDIR/src/bsd/drm/kernel"
  1787.     ;;
  1788. Linux)
  1789.     DRMBUILDDIR="$RUNDIR/src/linux/drm/kernel"
  1790.     ;;
  1791. esac
  1792.  
  1793. DoDrmBuild=
  1794.  
  1795. if [ -f $DRMBUILDDIR/Makefile ]; then
  1796.     echo ""
  1797.     echo "If you have source for your current kernel installed, you can"
  1798.     echo "have new DRM kernel modules built and installed.  Note: this will"
  1799.     echo "overwrite any existing DRM kernel modules you may have installed."
  1800.     echo "If you'd prefer to save them before installing new ones, answer 'n'"
  1801.     echo "here and follow the build/install instructions manually later."
  1802.     echo ""
  1803.     Echo "Do you want to build and install new DRM kernel modules? (y/n) [n] "
  1804.     read response
  1805.     case "$response" in
  1806.     [yY]*)
  1807.         DoDrmBuild=1
  1808.         ;;
  1809.     *)
  1810.         echo ""
  1811.         echo "To build the DRM modules manually, run 'make' from the"
  1812.         echo "$DRMBUILDDIR directory.  Once built, install"
  1813.         echo "them by running 'make install' from the same directory."
  1814.         ;;
  1815.     esac
  1816. fi
  1817.  
  1818. if [ X"$DoDrmBuild" != X ]; then
  1819.     cd $DRMBUILDDIR && \
  1820.         echo "" && \
  1821.         echo "Building DRM modules" && \
  1822.         make clean > build.log 2>&1 && \
  1823.         make >> build.log 2>&1
  1824.     if [ $? != 0 ]; then
  1825.         echo ""
  1826.         echo "DRM module build failed."
  1827.         echo "See $DRMBUILDDIR/build.log for details."
  1828.     else
  1829.         echo ""
  1830.         echo "Installing DRM modules"
  1831.         make install > install.log 2>&1
  1832.         if [ $? != 0 ]; then
  1833.             echo ""
  1834.             echo "DRM module install failed."
  1835.             echo "See $DRMBUILDDIR/install.log for details."
  1836.         else
  1837.             echo ""
  1838.             echo "DRM module build and install was successful."
  1839.             echo "You may need to manually unload the old module and reload"
  1840.             echo "the new ones, or reboot to have this done automatically."
  1841.         fi
  1842.     fi
  1843.     cd $WDIR
  1844. fi
  1845.  
  1846. echo ""
  1847. echo "Installation complete."
  1848.  
  1849. exit 0
  1850. ### Local Variables:     ***
  1851. ### tab-width: 4         ***
  1852. ### End:                ***
  1853.